// 1. 引入express
const express = require('express')
const { join } = require('path') //直接解构path的join方法

// 2. 创建应用对象
const app = express()

// 3. 配置路由
app.get('/xxx', (req, res) => {
  // 1. send方法的两个作用: 1. 设置响应主体 2. 响应浏览器
  // 注意: 只有传入字符串才是设置响应主体,如果传入的是数字,就不是设置响应主体了,而是设置响应的状态码
  // let obj = { name: 'zs' }
  // res.send(obj) // 注意: send不能传入数组或对象. 但是实际操作发现可以. 是因为send方法自动帮我们将数组或对象通过JSON.stringify转成了字符串了,类似后面的代码res.send(JSON.stringify(obj))
  // res.send(1) 注意:千万不要传入数字,这样是设置状态码.会直接报错
  // 2. download 作用: 告诉浏览器应该下载指定文件
  // res.download(相对/绝对路径)
  // res.download('./imgs/lsp.jpg')
  // res.download(join(__dirname, 'imgs', 'lsp.jpg'))
  // 3. sendFile 作用: 响应文件.如果浏览器可以渲染这个文件则直接渲染,如果浏览器不能渲染这个文件则让浏览器下载
  // 注意: sendFile 只能传入绝对路径
  // res.sendFile('./imgs/lt.jpg') //不行
  // res.sendFile(join(__dirname, 'imgs', 'lt.jpg'))
  // res.sendFile(join(__dirname, 'imgs', 'xxx'))

  //  4. redirect 重定向
  // res.redirect('http://localhost:5000/yyy')

  // 5. set 设置响应头
  // res.set('abc', '123')
  // 6. get 获取响应头
  // console.log(res.get('abc')) // 注意: 获取浏览器自动添加的响应头可能获取不到
  // 7. status 设置状态码
  // res.status(404)
  // 注意: set,get,status没有响应浏览器,所以要额外调用send方法
  res.send('响应了')
})

app.get('/yyy', (req, res) => {
  res.send('欢迎来到新红浪漫')
})

// app.post('/xxx', (req, res) => {
//   res.send('响应了') // 获取请求主体的数据
// })

// 4. 启动服务器
app.listen(5000, (error) => {
  if (error) console.log('服务器启动失败', error)
  else console.log('服务器启动成功')
})
